
const time = require('../../utils/time.js')
var app = getApp()
const db = wx.cloud.database()
Page({

  /**
   * 页面的初始数据
   */
  data: {
    index: 0,
    name: "",
    TabCur: 0, //顶部导航栏,
    show: false, // 控制授权页面是否展现

    // 校园动态
    schoolDynamic: [
      {
        avatarUrl: '../../static/personalAvatar.jpg',
        nickName: 'Smooth',
        time: time.formatTime_year_month_day(new Date()),
        comment: '静心沉淀，静待花开',
        view_num: '58',
        star_num: '20',
        comment_num: '3',
        is_star: false
      },
    ],
    // 通知公告
    notice: [],
    // 真正要展示的内容
    now: [],
    type: '校园动态',
    flag: 0, // 如果flag是1，说明是下拉刷新，那么就可以将前端数组的刷新变为动态，  变得好看！！！
  },


  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // 初始化，授权页面是否展示    
    console.log(app.globalData);
    console.log(wx.getStorageSync('is_login'));
    const that = this;

    // 初始化 校园动态 以及 通知公告 的数据
    this.getData();

  },

  loginData() {

    this.setData({
      user_data: app.globalData.user_data,
      is_bind: wx.getStorageSync('is_bind'),
      is_login: wx.getStorageSync('is_login'),
    })
    if (this.data.is_bind) {
      this.setData({
        course_data: app.globalData.user_data.courses
      })
    }

  },

  getData() {
    const that = this;

    // 下拉刷新才重新清空数组，进行数据读取
    if(this.data.flag) {
      this.setData({
        schoolDynamic: [],
        notice: [],
        now: []
      })
      this.data.flag = 0;
    };
    

    // 校园动态 数据获取
    db.collection('schoolDynamic').where({}).get()
      .then(res => {
        console.log('校园动态 数据开始更新')
        console.log(res.data);
        that.setData({
          schoolDynamic: res.data,
        })

        // 如果 上一页的缓存 处于校园动态，那就渲染校园动态数据到 now 上
        if (that.data.type === '校园动态') {
          that.setData({
            now: that.data.schoolDynamic
          })
        }
        console.log('校园动态 数据更新完毕');
      })

    // 通知公告 数据获取
    db.collection('notice').where({}).get()
      .then(res => {
        console.log('通知公告 数据开始更新')
        console.log(res.data);
        that.setData({
          notice: res.data
        })
        // 如果 上一页的缓存 处于通知公告，那就渲染通知公告数据到 now 上
        if (that.data.type === '通知公告') {
          that.setData({
            now: that.data.notice
          })
        }
        console.log('通知公告 数据更新完毕');
      })


  },

  //下拉刷新
  onPullDownRefresh() {
    console.log("检测到下拉刷新");
    this.data.flag = 1;
    this.getData();
  },

  // 分页获取数据
  onReachBottom() {
    this.setData({
      page_index: this.data.page_index + 1
    })
    this.getData();
  },

  // 顶部导航栏选择
  tabSelect(e) {

    if (e.currentTarget.dataset.id === '1') {
      this.setData({
        TabCur: 1,
        type: '通知公告',
        now: this.data.notice
      })
    } else {
      this.setData({
        TabCur: 0,
        type: '校园动态',
        now: this.data.schoolDynamic
      })
    }

  },

  // 跳到发表动态页面
  add_share() {

    let shouquan = app.globalData.is_login;
    console.log(shouquan);
    if (!shouquan) {
      // 如果还没授权，那就授权
      this.setData({
        show: true
      });
    } else {
      // 授权了就跳转到发动态的页面
      if (this.data.TabCur === 0) {
        this.data.type = '校园动态'
      } else {
        this.data.type = '通知公告'
      }

      wx.navigateTo({
        url: './search' + '?type=' + this.data.type,
      })

    }

  },

  // 获取授权
  getUserProfile: function (e) {
    const that = this;
    app.getUserProfile().then(res => {
      // console.log(res);
      that.setData({
        show: false
      })
    }).catch(err => {
      console.log(err);
    })

  },

  go_detail(e) {
    console.log(e)
    let share = e.currentTarget.dataset.share
    wx.navigateTo({
      url: './detail?share=' + share._id,
    })
  },

  hideModel() {
    this.setData({
      show: false
    })
  },

  // 置顶文章不给点赞和评论
  change_starFalse(e) {
    wx.showModal({
      title: '该文章无法点赞'
    });

  },

  // 改变浏览量
  change_view(e) {
    const that = this;
    const database = this.data.type === '校园动态' ? 'schoolDynamic' : 'notice'; // 要进行操作的是哪个数据库，校园动态，还是通知公告

      // 改变每篇文章浏览量
      db.collection(database).where({}).update({
        data: {
          view_num:1
        },
        success: function (res) {
          console.log(res.data);
          wx.showToast({
            title: '点赞文章成功',
            icon: 'success'
          })
          that.getData();
        }
      })

  },

  // 改变点赞量
  change_star(e) {
    const that = this;

    let shouquan = app.globalData.is_login;
    console.log(shouquan);
    if (!shouquan) {
      // 如果还没授权，那就授权
      this.setData({
        show: true
      });
    } else {
      console.log(e);
      // 开始点赞
      var array = this.data.type === '校园动态' ? this.data.schoolDynamic : this.data.notice; // 要操作的是哪个数组，校园动态还是通知公告

      if(array[e.target.dataset.index].is_star) {
        // 已经点赞了，那么现在是取消点赞
        this.deleteStar(e.target.dataset._id, array[e.target.dataset.index].star_num);

      } else {
        // 还没点赞，那么现在是进行点赞
        this.addStar(e.target.dataset._id, array[e.target.dataset.index].star_num);

      }
      
    }

  },

  // 对文章进行点赞
  addStar(id, star_num) {
    const that = this;
    const database = this.data.type === '校园动态' ? 'schoolDynamic' : 'notice'; // 要进行操作的是哪个数据库，校园动态，还是通知公告

    db.collection(database).doc(id).update({
      data: {
        is_star: true,
        star_num: star_num + 1
      },
      success: function (res) {
        console.log(res.data);
        wx.showToast({
          title: '点赞文章成功',
          icon: 'success'
        });
         
        // 点赞成功后，该用户的点赞数也得加1
        // 先查询该用户点赞数量
        db.collection('users').get().then(res => {
          const num = res.data[0].starCount;
          // 再更新
          db.collection('users').where({
            _openid: app.globalData.openid
          }).update({
            data: {
              starCount: num + 1
            },
            success: function (res) {
              console.log(res);
            }
          })
        })

        that.getData();
      }
    })
  },

  // 对文章取消点赞
  deleteStar(id, star_num) {
    const that = this;
    const database = this.data.type === '校园动态' ? 'schoolDynamic' : 'notice'; // 要进行操作的是哪个数据库，校园动态，还是通知公告

    db.collection(database).doc(id).update({
      data: {
        is_star: false,
        star_num: star_num - 1
      },
      success: function (res) {
        console.log(res.data);
        wx.showToast({
          title: '取消点赞成功',
          icon: 'success'
        })

        // 取消点赞成功后，该用户的点赞数也得减1
        // 先查询该用户点赞数量
        db.collection('users').get().then(res => {
          const num = res.data[0].starCount;
          // 再更新
          db.collection('users').where({
            _openid: app.globalData.openid
          }).update({
            data: {
              starCount: num - 1
            },
            success: function (res) {
              console.log(res.data);
            }
          })
        })

        that.getData();
      }
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    // this.loginData()
    // console.log(app.globalData);

    const that = this;
    const database = this.data.type === '校园动态' ? 'schoolDynamic' : 'notice'; // 要进行操作的是哪个数据库，校园动态，还是通知公告

    // 获取校园动态和通知公告的数据
    this.getData();
    // 每次展示都改变浏览量
    // this.change_view();
    
  },


  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
    this.getData()
  },


  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  },


})